package com.springmvc.platform.base.service;

import com.springmvc.platform.base.domain.BaseDomain;

import java.util.List;

/**
 * @author zhouhong 基本crud类
 * @create 2017/10/25
 * @modify
 */
public interface BaseService<T extends BaseDomain> {
    /**
     * 根据实体属性查询符合要求的数据
     * @param recond
     * @return
     */
    List<T> query (T recond);

    /**
     * 根据主键ID查询数据
     * @param id
     * @return
     */
    T queryById(Long id);

    /**
     * 查询所有未删除数据
     * @return
     */
    List<T> queryAll();
    /**
     * 根据实体中的属性查询总数（等于）
     * @param record
     * @return
     */
    int queryCount(T record);
    /**
     * 保存一个实体
     * @param record
     * @return
     */
    int add(T record);
    /**
     * 根据主键ID更新实体全部字段
     * @param record
     * @return
     */
    int updateById(T record);

    /**
     * 逻辑删除
     * @param record
     * @return
     */
    int remove(T record);

    /**
     * 批量插入
     * @param list
     * @return
     */
    int addAll(List<T> list);
}
